﻿//
//
/////////////////////////////////////////////////////////////////////////////

using System;
using System.Globalization;
using System.Linq;
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Controls;

using System.Windows.Threading;
using ThinMediaLibrary;

/////////////////////////////////////////////////////////////////////////////
namespace ThinControlLibrary
{
    /////////////////////////////////////////////////////////////////////////
    public partial class PlayControl : UserControl
    {
        DispatcherTimer _timer = new DispatcherTimer();

        /////////////////////////////////////////////////////////////////////
        public PlayControl()
        {
            InitializeComponent();
            _init();
        }

        private void _init()
        {
            _timer.Interval = TimeSpan.FromMilliseconds(100);
            _timer.Tick += new EventHandler(delegate(object s, EventArgs a)
            {
                sliderPosition.Value = MediaPlayer.Position.TotalSeconds;

                byte[] digitNum1 = MediaPlayer.Position.Minutes.ToString("00").Select(item => byte.Parse(item.ToString(CultureInfo.InvariantCulture))).ToArray();
                byte[] digitNum2 = MediaPlayer.Position.Seconds.ToString("00").Select(item => byte.Parse(item.ToString(CultureInfo.InvariantCulture))).ToArray();
                firstDigitNumber.Value = (byte)digitNum1[0];
                secondDigitNumber.Value = (byte)digitNum1[1];
                thirdDigitNumber.Value = (byte)digitNum2[0];
                fourthDigitNumber.Value = (byte)digitNum2[1];
            });
        }

        /////////////////////////////////////////////////////////////////////
        private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            //mediaElement1.Pause();
            //mediaElement1.Position = TimeSpan.FromSeconds(sliderPosition.Value);
            //mediaElement1.Play();
        }

        /////////////////////////////////////////////////////////////////////
        private void mediaElement1_MediaOpened(object sender, RoutedEventArgs e)
        {
            sliderPosition.Maximum = MediaPlayer.NaturalDuration.TimeSpan.TotalSeconds;
            sliderPosition.Minimum = 0;
        }

        /////////////////////////////////////////////////////////////////////
        public MediaElement MediaPlayer
        {
            get { return mediaElement1; }
        }

        /////////////////////////////////////////////////////////////////////
        public void Play(PlayListMediaItem mediaItem)
        {
            if (mediaItem != null)
            {
                MediaPlayer.Source = new Uri(mediaItem.Path, UriKind.Absolute);
                MediaPlayer.Play();
                digitalDotes.Opacity = 1.0;
                _clearElementsOnStart();
            }
        }

        /////////////////////////////////////////////////////////////////////
        private void _clearElementsOnStart()
        {
            _timer.Start();
        }

        /////////////////////////////////////////////////////////////////////
        private void _clearElementsOnStop()
        {
            _timer.Stop();            
        }

        /////////////////////////////////////////////////////////////////////
        public void Stop()
        {
            MediaPlayer.Stop();
            _clearElementsOnStop();
        }
    }
/////////////////////////////////////////////////////////////////////////////
}//ThinControlLibrary
